#include<iostream>
using namespace std;
#include<cstring>
#include<math.h>
/*成员对象/对象成员
1.定义：一个类(Birth)定义的对象是另一个类(stu)的成员。
2.构造函数的初始化：在【初始化列表】上进行初始化。
  //由于类（stu）的一个成员是类（Birth）的对象，因此stu的构造函数的初始化存在问题。
3.构造函数调用顺序：先调用成员对象（Birth）的构造函数，再调用自己（stu）的构造函数；
                    如果有多个成员对象，成员对象的构造函数的调用顺序与其在类中创建成员的顺序有关，
					顺序在前的成员对象，其构造函数先调用；顺序在后的后调用。
					e.g stu中先创建了Birth的对象date,后创建了score的对象num，
						所以在构造函数调用时，先调用date的构造函数，后调用num的构造函数。
4.在输出数据时，可以调用各个类中的输出函数
				也可以在各个类中创建函数，返回各个类中的成员的值，最后用“cout<<对象名.函数”来输出对应的值
*/

/*class Birth
{
	int year;
	int month;
public:
	Birth(int y, int m)
	{
		year = y;
		month = m;
		cout<<"birth"<<endl;
	}
	void output()
	{
		cout<<"出生年月："<<year<<"年"<<month<<"月"<<endl;
	}
};

class score
{
	int Chinese;
	int math;
public:
	score(int c, int m)
	{
		Chinese = c;
		math = m;
		cout<<"score"<<endl;
	}
	void display()
	{
		cout<<"语文成绩："<<Chinese<<"  "<<"数学成绩："<<math<<endl;
	}
};

class stu
{
	char name[20];
	int age;
	Birth date;//表示出生年月
	score num;
	//int year;
	//int month;
	//想把出生年月同时表示，则可以为出生年月重新创建一个类 Birth 来表示
public:
	stu(char* n, int a, int nian, int yue, int yu, int shu):date(nian, yue), num(yu, shu)//构造函数初始化的方法-->2.
	{                                                    //此处的nian和yue与Birth的构造函数中的y和m相对应
		strcpy(name, n);
		age = a;
		cout<<"stu"<<endl;
	}
	void show()
	{
		cout<<"姓名："<<name<<"  "<<"年龄："<<age<<endl;
		date.output();
		num.display();
	}
};

int main()
{
	stu s1("张三", 20, 2004, 8, 90, 112);
	s1.show();
	return 0;
}*/

//练习：输入矩形的左下角和右上角，输出矩形的周长和面积

/*
class point1
{
	int x;
	int y;
public:
	point1(int a, int b)
	{
		x = a;
		y = b;
		cout<<"p1"<<endl;
	}
	int getx()
	{
		return x;
	}
	int gety()
	{
		return y;
	}
};

class point2
{
	int x;
	int y;
public:
	point2(int a, int b)
	{
		x = a;
		y = b;
		cout<<"p2"<<endl;
	}
	int getx()
	{
		return x;
	}
	int gety()
	{
		return y;
	}
};
*/

/*
class Rectangle
{
	point1 P1;
	point2 P2;
	int C;
	int S;
public:
	Rectangle(int x1, int y1, int x2, int y2):P1(x1, y1), P2(x2, y2){}
	void show()
	{
		C = fabs(2 * (P1.getx() - P2.getx()) + 2 * (P1.gety() - P2.gety()));
		S = fabs((P1.getx() - P2.getx()) * (P1.gety() - P2.gety()));
		cout<<"矩形周长："<<C<<"  "<<"矩形面积："<<S<<endl;
	}
};

int main()
{
	Rectangle r1(2, 3, 4, 5);
	r1.show();
}
*/
